package helexis.game.tyrian.screen;

import helexis.game.tyrian.Tyrian;
import helexis.game.tyrian.service.MusicManager.TyrianMusic;
import helexis.game.tyrian.service.SoundManager.TyrianSound;

import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.ui.Skin;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;

public class MenuScreen extends AbstractScreen {
	
	/*
	 * 아래 처럼 맨 처음 한글로 시도하였으나,
	 * 화면에 정상적으로 표시되지 않음 !!
	 * 
	 * 이유인 즉슨, 여기서 사용하는 폰트는 비트맵 폰트인데,...
	 * 한글은 트루타입 폰트만 존재하기 때문이다...
	 * 
	 * 따라서, 한글 비트맵 폰트를 만들어서 추가해야 하고,...
	 * 그러려면 별도의 툴 - Hiero Font Editor (http://libgdx.googlecode.com/svn/jws/hiero.jnlp) - 을 사용해야 한다.
	 * 
	 * 한글 폰트와 관련하여 아래의 링크를 추가한다...
	 * http://edoli.tistory.com/entry/LibGDX%EC%97%90%EC%84%9C-%ED%95%9C%EA%B8%80-%ED%8F%B0%ED%8A%B8-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0
	 */
//	private String message = "메뉴 스크린에 오신걸 환영합니다~!!";
//	private String message = "Welcome to the great menu screen~!!";
//	private float x;
//	private float y;
	
	/*
	 * Tutorial 4.
	 * 
	 * 메뉴 버튼을 생성하기 위한 값 설정
	 */
	private static final float BUTTON_WIDTH = 300f;
	private static final float BUTTON_HEIGHT = 60f;
	private static final float BUTTON_SPACING = 10f;
	

	public MenuScreen(Tyrian game) {
		super(game);
	}
	
	
	@Override
	public void show() {
		
		super.show();
		
		if (table == null) {
			this.init();
		}//end if
		
	}//end of show()
	
	
	public void init() {

		Skin skin = getSkin();
		
		/*
		 * 테이블 레이아웃을 위한 액터 생성...
		 */
		table = new Table(skin);
		table.setFillParent(true);
		stage.addActor(table);
		
		
		/*
		 * welcome 레이블 생성
		 */
		table.add("Welcome to Tyrian !").spaceBottom(20);
		table.row();
		
		/*
		 * 모든 버튼 공통으로 적용 할 속성 값을 설정
		 */
		table.defaults().size(BUTTON_WIDTH, BUTTON_HEIGHT).spaceBottom(BUTTON_SPACING);
		
		/*
		 * start game 버튼 생성
		 */
		TextButton startGameButton = new TextButton("Start Game", skin);
		startGameButton.addListener(new ClickListener() {
			@Override
			public void clicked(InputEvent event, float x, float y) {
				super.clicked(event, x, y);
				game.getSoundManager().play(TyrianSound.CLICK);
				game.setScreen(game.getStartGameScreen());
			}//end of clicked()
		});
		table.add(startGameButton);
		table.row();
		
		/*
		 * options 버튼 생성
		 */
		TextButton optionsButton = new TextButton("Options", skin);
		optionsButton.addListener(new ClickListener() {
			@Override
			public void clicked(InputEvent event, float x, float y) {
				super.clicked(event, x, y);
				game.getSoundManager().play(TyrianSound.CLICK);
				game.setScreen(game.getOptionsScreen());
			}//end of clicked()
		});
		table.add(optionsButton);
		table.row();
		
		/*
		 * Tutorial 5.
		 * 
		 * 명예의 전당 버튼을 그냥 하이스코어 버튼으로 변경 !!
		 */
		TextButton highScoresButton = new TextButton("High Scores", skin);
		highScoresButton.addListener(new ClickListener() {
			@Override
			public void clicked(InputEvent event, float x, float y) {
				super.clicked(event, x, y);
				game.getSoundManager().play(TyrianSound.CLICK);
				game.setScreen(game.getHighScoresScreen());
			}//end of clicked()
		});
		table.add(highScoresButton);
		
		
		/*
		 * 메뉴 화면에서 메뉴 음악 플레이~~
		 */
		game.getMusicManager().play(TyrianMusic.MENU);
		
	}//end of init()
	
	
	
	@Override
	public void render(float delta) {
		super.render(delta);
		
		/*
		 * Tutorial 3.
		 * 
		 * 화면에 보여 줄 메시지를 그린다 !!
		 */
		batch.begin();
//		font.draw(batch, message, this.x, this.y);
		batch.end();
	}
	

}
//end of MenuScreen.java